Consulta de Guías Docentes



Academic Year/course: 2022/23

439 - Bachelor's Degree in Informatics Engineering

30230 - Language Processors


Syllabus Information

Academic Year:
2022/23
Subject:
30230 - Language Processors
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
Degree:
439 - Bachelor's Degree in Informatics Engineering
ECTS:
6.0
Year:
3
Semester:
Second semester
Subject Type:
---
Module:
---

1. General information

2. Learning goals

3. Assessment (1st and 2nd call)

4. Methodology, learning tasks, syllabus and resources

4.1. Methodological overview

The methodology followed in this course is oriented towards the achievement of the learning objectives. The learning process designed for this subject is based on the following elements:

  • Lectures with the contents of the subject.
  • The student's personal study and autonomous work.
  • Working on the solutions of theoretical and practical problems. 
  • The development of specific and guided laboratory work by students.

4.2. Learning tasks

The program offered to the student in order to help her to achieve the expected results include the following learning activities:

  • master classes where the teacher will explain the subject concepts
  • problem solving classes where problems related to the application of the concepts and techniques will be discussed
  • laboratory sessions students will have to apply the studied concepts and techniques for developing a compiler for a given programming language

4.3. Syllabus

Lectures and problem classes will focus on the study of the following topics:

  • Topic 1: Introduction. Language processors.
  • Topic 2: Lexical Analysis. Automata and regular expressions. Implementation of a tokenizer.
  • Topic 3: Context-free grammars. Grammar transformations. Parsing techniques.
  • Topic 4: Semantic analysis. Symbol table. Implementation of the semantic analysis.
  • Topic 5: Runtime Environments.
  • Topic 6: Code generation and optimisation.

Practical laboratory sessions will cover the construction of a compiler for a simple language from the beginning, completing the phases of lexical, syntactic and semantic analysis, as well as code generation.

4.4. Course planning and calendar

The course schedule and timetable will be defined by the centre in the academic calendar for the corresponding academic year.


Student's work

  • Type 1 activity (lecture classes): 30 hours
  • Type 3 activity (practical classes): 24 hours
  • Theoretical/practical assessment activity: 3 hours
  • Practical assessment activity: 3 hours
  • Student work: 90 hours (approx.)

The detailed calendar of activities will be established on the basis of the calendar approved by the University for the corresponding academic year. Dates for exams and assignments will be announced well in advance during classes and on the course page (Moodle).

 

 

 


Curso Académico: 2022/23

439 - Graduado en Ingeniería Informática

30230 - Procesadores de lenguajes


Información del Plan Docente

Año académico:
2022/23
Asignatura:
30230 - Procesadores de lenguajes
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
Titulación:
439 - Graduado en Ingeniería Informática
Créditos:
6.0
Curso:
3
Periodo de impartición:
Segundo semestre
Clase de asignatura:
---
Materia:
---

1. Información Básica

1.1. Objetivos de la asignatura

La asignatura y sus resultados previstos responden a los siguientes planteamientos y objetivos:

  • Dar a conocer el funcionamiento interno de los compiladores.
  • Capacitar al alumno para que aplique los conocimientos adquiridos sobre gramáticas y autómatas para la especificación de lenguajes y la construcción de traductores.
  • Dar a conocer al alumno en profundidad los métodos y técnicas de construcción de traductores.
  • Capacitar al alumno para utilizar herramientas específicas para la construcción de traductores.
  • Lograr que el alumno utilice los traductores y compiladores de forma eficaz y eficiente.

Estos planteamientos y objetivos están alineados con algunos de los Objetivos de Desarrollo Sostenible de la Agenda 2030 (ODS, https://www.un.org/sustainabledevelopment/es/) y determinadas metas concretas. La adquisición de los resultados de aprendizaje de la asignatura proporciona capacitación y competencia al estudiante para contribuir en cierta medida a su logro:

  • Objetivo 8: Promover el crecimiento económico sostenido, inclusivo y sostenible, el empleo pleno y productivo y el trabajo decente para todo.
    Meta 8.4. Mejorar progresivamente, de aquí a 2030, la producción y el consumo eficientes de los recursos mundiales y procurar desvincular el crecimiento económico de la degradación del medio ambiente, conforme al Marco Decenal de Programas sobre modalidades de Consumo y Producción Sostenibles, empezando por los países desarrollados.

1.2. Contexto y sentido de la asignatura en la titulación

Procesadores de Lenguajes es una materia obligatoria de la especialidad de Computación que se implanta como una asignatura de 6 créditos ECTS en el segundo semestre del tercer curso del Grado en Ingeniería Informática con un perfil práctico y aplicado.

La ubicación temporal de la asignatura permite enfocar la asignatura de forma muy práctica y aplicada, y que reflexione sobre las características de los compiladores y traductores que ha utilizado o que conoce. Además, los conceptos iniciales relativos al análisis léxico, la construcción de lenguajes y gramáticas y el análisis de los mismos, los ha adquirido previamente a través de la asignatura de Teoría de la Computación, lo que permite actuar de forma directa y práctica, y aplicar los conceptos aprendidos a la construcción de un compilador completo de un lenguaje con un conjunto reducido de tipos de datos e instrucciones.

1.3. Recomendaciones para cursar la asignatura

Se recomienda que el alumno haya cursado las siguientes asignaturas:

  • Teoría de la Computación

Además, se hacen las siguientes recomendaciones:

  • Estudio de los conceptos teóricos.
  • Resolución de ejercicios relacionados con los conceptos teóricos.
  • Realización de las prácticas de laboratorio de forma cuidadosa y durante las fechas recomendadas. Hay una muy estrecha relación entre los conceptos teóricos y el trabajo a desarrollar en las sesiones de laboratorio, por lo que la correcta realización de las prácticas periódicas es una muy buena forma de llegar a los resultados de aprendizaje necesarios para superar la asignatura

2. Competencias y resultados de aprendizaje

2.1. Competencias

Al superar la asignatura, el estudiante será más competente para...

  1. Conocer los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, diseño y procesamiento de lenguajes.
  2. Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.

2.2. Resultados de aprendizaje

El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados...

  1. Comprende el funcionamiento interno de los compiladores y los utiliza eficaz y eficientemente.
  2. Aplicar los conocimientos adquiridos sobre gramáticas y autómatas para la especificación de lenguajes y la construcción de traductores.
  3. Conocer los métodos y técnicas de construcción de traductores.
  4. Dominar el uso de herramientas específicas para la construcción de traductores.

2.3. Importancia de los resultados de aprendizaje

El conjunto de los resultados de aprendizaje pueden concretarse indicando que el alumno será capaz de identificar los requisitos de un determinado lenguaje y construir un traductor completo que abarque el análisis léxico, sintáctico y semántico del lenguaje, así como la generación de código correspondiente para su posterior ejecución. El éxito de su aprendizaje resulta de suma importancia para el desarrollo del futuro Ingeniero en Informática, ya que la comprensión de cómo funciona internamente un compilador será fundamental en su día a día cuando trabaje con lenguajes de programación.

3. Evaluación

3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación:

  • Evaluación continua (primera convocatoria): Se basará en la entrega de las prácticas y el desarrollo de una prueba teórico-práctica. Las prácticas tienen como resultado la construcción de un compilador para un lenguaje sencillo, en el plazo previsto, junto con una memoria. Es obligatorio presentar todas las prácticas mediante las entregas intermedias en fechas concretas. En la prueba teórico-práctica el estudiante deberá demostrar que ha adquirido las competencias y los resultados de aprendizaje de la asignatura mediante la resolución de un problema planteado sobre el compilador planteado para las sesiones de laboratorio.
  • Evaluación global (primera y segunda convocatorias): Se basará en la entrega de un compilador desarrollado según las pautas del guión que se proporcionará al estudiante, una memoria y una defensa del trabajo ante los profesores, así como una prueba teórico-práctica. En las pruebas se comprobará que el estudiante ha asimilado los conceptos clave de la asignatura y que ha realizado las prácticas, mediante la resolución de algún ejercicio o ampliación sobre el compilador desarrollado.

En la calificación final el peso de la parte correspondiente a las prácticas de laboratorio será del 60%, mientras que el correspondiente a la prueba teórico-práctica será del 40%. Para superar la asignatura es necesario obtener un mínimo de 5 puntos sobre 10 en la evaluación de las prácticas y un mínimo de 4 puntos sobre 10 en la evaluación de la prueba teórico-práctica. En caso de no alcanzar el mínimo establecido en alguna de las partes, la calificación final será el mínimo entre 4 y la media ponderada de las dos partes consideradas, sobre 10.

4. Metodología, actividades de aprendizaje, programa y recursos

4.1. Presentación metodológica general

El proceso de aprendizaje que se ha diseñado para esta asignatura se basa en lo siguiente:

  1. La presentación de los contenidos de la asignatura en clases magistrales por parte del profesor.
  2. El estudio personal de la asignatura por parte de los alumnos.
  3. La resolución de supuestos teórico-prácticos para casos específicos, en sesiones de problemas.
  4. El desarrollo de prácticas específicas por parte de los alumnos, guiadas por el profesor, que amplían los conocimientos teóricos y conducentes al desarrollo de un traductor como caso de aplicación real de la asignatura.

4.2. Actividades de aprendizaje

El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades...

  1. Desarrollo del programa de la asignatura en las clases impartidas en el aula.
  2. Aplicación de los conceptos y técnicas específicas presentadas en el programa de la asignatura en las sesiones de problemas y prácticas.
  3. Aplicación de los conceptos y técnicas desarrollados durante el curso a través de sesiones tutorizadas.

4.3. Programa

Programa de la asignatura

Sesiones magistrales

Las actividades de aprendizaje presenciales en el aula, organizadas en clases magistrales y de problemas, se centrarán en el estudio de los siguientes temas:

  • Tema 1: Introducción. Traducción y procesamiento de lenguajes.
  • Tema 2: Análisis léxico. Autómatas y expresiones regulares. Implementación de un analizador léxico. 
  • Tema 3: Análisis sintáctico. Gramáticas libres de contexto. Transformaciones. Implementación de un analizador sintáctico.
  • Tema 4: Análisis semántico. Tabla de símbolos. Implementación de un analizador semántico.
  • Tema 5: Entornos de ejecución.
  • Tema 6: Generación y optimización de código.

Sesiones de prácticas de laboratorio y sesiones de problemas

Se realizarán sesiones de prácticas a través de las que se abordará la construcción de un compilador para un lenguaje sencillo desde su inicio, completando las fases de análisis léxico, sintáctico, semántico y generación de código.

4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave

Calendario de sesiones presenciales y presentación de trabajos

El calendario de la asignatura será definido por el centro en el calendario académico del curso correspondiente.

Trabajo del estudiante

  • Actividad de tipo 1 (clases magistrales): 30 horas
  • Actividad de tipo 3 (clases de prácticas): 24 horas
  • Actividad de evaluación teórico/práctica: 3 horas
  • Actividad de evaluación práctica: 3 horas
  • Trabajo del estudiante: 90 horas (aprox.)

El calendario detallado de actividades se establecerá a partir del aprobado por la Universidad para el curso académico correspondiente. Las fechas de exámenes y de entrega de trabajos se anunciarán con suficiente antelación durante las clases y en la página del curso (Moodle).